大家好,今天要來和大家聊聊數位簽章是什麼
昨天我們已經介紹了雜湊函數(hash functions)
,如果還沒看過的可以先去看一下,先把雜湊搞懂再來看這篇會比較好理解(Day 7 : 觀念篇 - 密碼學裡的雜湊函數是什麼?它跟加密差在哪?)
那我們先來講數位簽章是什麼
通常我們簽立一份文件時,都會簽名+蓋手印
來證明這是我本人簽署的
那如果把情況搬來網路上,該怎麼確認這是你本人簽的?在傳輸過程中有沒有被 hacker 竄改過?
於是,數位簽章就出現啦
它是透過RSA加密文件給對方,再讓對方檢驗這到底是不是你本人傳輸過來的,所以也稱數位簽名
數位簽章可以證明:
所以數位簽章有「無法」被偽造、竄改
等特性,同時他也存在不可否認性
因為這份簽章全世界只有「你一個人」可以簽出來,所以它既無法被偽造,你也無法否認曾經簽過這份文件
至於竄改簽章的部分,其實是「可以」被竄改的
但遭到竄改後,它內容檢驗就不會通過了,因為簽章可以檢驗「檔案的完整性
」,所以也可以直接說「簽章無法遭到竄改」
那使用數位簽章進行傳輸的步驟為何呢?
這樣講太抽象了,這裡我們來舉個例子,假設今天海綿寶寶想傳 mail 問章魚哥要不要去抓水母
這時海綿寶寶對 mail 進行了「簽章」,證明這封 mail 是他「本人」傳的
而章魚哥收到 mail 時要進行「驗簽章」,確認這封 mail 是「海綿寶寶本人」傳的
首先,海綿寶寶會先對這封 mail 的「明文訊息」進行雜湊,並得到一串雜湊值
得到雜湊值後,海綿寶寶要使用他自己的「秘密金鑰」,對這段雜湊值進行「加密」
而這段雜湊值進行加密後,得到的就是「簽章」
這時海綿寶寶把「原本的明文訊息」和「簽章」放在一起,透過網路傳送給章魚哥
章魚哥收到 mail 後,拿海綿寶寶的「公開金鑰」對簽章進行「解密」
解密後,就會拿到「原本的明文訊息」經雜湊後,所得到的雜湊值
這時章魚哥再對 mail 裡的「明文訊息」進行雜湊,得到第二個雜湊值
再將兩段的雜湊值進行比對,如果相同,代表此封mail的內容沒有遭到毀損或加料,驗簽章成功。此時就能確定,那段明文訊息是海綿寶寶「本人」傳給章魚哥的
如果不相同,代表這封mail有被hacker動過手腳,驗簽章失敗
所以嚴格來說,簽章的加密不是「加密」,或者說不是為了「隱密」,因為使用公開金鑰就能解開了,所以簽章每個人都能解密來看
以上就是今天的介紹
希望大家看完能對數位簽章的概念、傳輸模式更加了解